home *** CD-ROM | disk | FTP | other *** search
-
- #include "../CGVPMacro.csi"
-
-
- VertAttributes { POSITION_3 PRIM_COLOR }
-
- MainInput { VIEWPROJ_MATRIX, uniform float4 SunDirect, CAMERA_POS, uniform float3 Tangent, uniform float3 ScaleBumpTex, uniform float4 TexGen0, uniform float4 TexGen1 }
- DeclarationsScript
- {
- IN_C0
- OUT_T0_T1_T2_T3_C0
- }
- PositionScript = PosCommon
- CoreScript
- {
- float2 vTex;
- vTex.x = dot(TexGen0, vPos);
- vTex.y = dot(TexGen1, vPos);
- OUT.Tex1.xy = vTex * ScaleBumpTex.xy;
- OUT.Tex0.xy = vTex;
-
- float3 normal = IN.Color.xyz * (2).xxx - IN.Position.www;
- //float3 normal;
- //normal.x=0;
- //normal.y=0;
- //normal.z=1;
-
- float3 binorm = normalize(cross(Tangent, normal));
- float3 tang = cross(binorm, normal);
-
- // compute the 3x3 tranform from tangent space to object space
- float3x3 objToTangentSpace;
- objToTangentSpace[0] = tang;
- objToTangentSpace[1] = binorm;
- objToTangentSpace[2] = normal;
-
- // store normalized light vector
- float3 lightVec = mul(objToTangentSpace, SunDirect.xyz);
- float3 viewVec = mul(objToTangentSpace, CameraPos.xyz - vPos.xyz);
-
- // compute half angle vector
- float3 halfAngleVector = normalize(lightVec.xyz) + normalize(viewVec);
-
- OUT.Tex2.xyz = lightVec;
- OUT.Tex3.xyz = halfAngleVector;
- }
-